Signals within computing systems are generated by, communicated between, and handled by (i.e., processed by) multiple different software and hardware components. Hardware or software may generate the signals. The signals may be transmitted to appropriate software handlers in one type of memory, such as kernel space, and then transmitted to other software handlers in another type of memory, such as user space. The former and latter software handlers may communicate back and forth multiple times to handle some types of signals. Signals can include hardware-generated exceptions and interrupts, as well as software-generated interrupts.